package com.wash.shoes.mapper;

import com.wash.shoes.resp.StatisRecordVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 时效预警Mapper
 */
public interface TimelinessWarnMapper {
    /**
     * 获取48小时妥投量
     * <p>
     * 订单状态是送鞋中，当前时间与update时间48小时送到的单量
     *
     * @return
     */
    StatisRecordVo fortyEighthDeliveryQuantity(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 在厂量
     * <p>
     * 订单状态不是取消、不是送鞋中、不是取鞋中
     * <p>
     *
     * @return
     */
    StatisRecordVo inFactoryQuantity(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);


    /**
     * 入厂待拆包
     * <p>
     * 订单状态是待入库
     */
    StatisRecordVo inFactoryWaitUnpacking(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 在厂待质检
     *
     * @return
     */
    StatisRecordVo waitingForQualityInspection(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 质检待出厂量
     * <p>
     * <p>
     * 订单状态是待出库
     * </p>
     */
    StatisRecordVo qualityWaitOutFactory(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 今日预检衣服量
     * <p>
     * 今天入库的订单量
     * </p>
     */
    StatisRecordVo todayPreCheckClothes(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 今日质检衣服量
     * 今天质检完成的订单量
     */
    StatisRecordVo todayQualityClothes(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 今日产能指标-今日出厂量
     *
     * @return
     */
    StatisRecordVo todayOutput(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 近三天出厂量
     * 订单状态是送鞋中，或者是完成 ，当前时间与update时间 向前推三天的单量
     */
    StatisRecordVo threeDaysOutFactory(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 未入厂
     * 订单状态是取鞋中
     */
    StatisRecordVo unInFactory(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 超过24H未拆包
     * 订单状态是待入库超过24H的
     */
    StatisRecordVo over24HUnpacking(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 超过72H未拆包,订单状态是待入库超过72H的
     *
     * @return
     */
    StatisRecordVo over72HUnpacking(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 在厂超过4天
     * 订单状态不是取消、送鞋中、取鞋中 时间是大于4天的
     */
    StatisRecordVo inFactoryOver4Days(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);


    /**
     * 在厂超过6天的
     * 订单状态不是取消、送鞋中、取鞋中 时间是大于6天的
     */
    StatisRecordVo inFactoryOver6Days(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);


    /**
     * 今日工单
     * 今天创建的工单
     */
    int todayWorkOrder(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);


    /**
     * 12小时未处理工单
     * 12个小时工单状态还是进行中的
     */
    int twelveHoursUnprocessedWorkOrder(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);


    /**
     * 24小时未处理工单
     * 24个小时工单状态还是进行中的
     */
    int twentyFourHoursUnprocessedWorkOrder(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 48小时未处理工单
     * 48个小时工单状态还是进行中的
     */
    int fortyEightHoursUnprocessedWorkOrder(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);


    /**
     * 近三天工单量
     * 近3天创建的工单数量
     */
    int threeDaysWorkOrder(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);

    /**
     * 反洗订单量
     * 近一个月内反洗的订单量(订单)
     * SELECT * FROM  os_order WHERE  order_no LIKE  'R%'
     */
    StatisRecordVo reverseWashOrder(@Param("factoryId") String factoryId, @Param("shopId") String shopId, @Param("userBindType") String userBindType, @Param("barndIdList") List<String> barndIdList, @Param("barndId") String barndId);
}
